package gateway.config;

import gateway.internal.config.yaml.YamlConfigLoader;

import java.util.List;

/**
 * @author Jin Zheng
 * @since 1.0 2020-09-09
 */
public interface Config
{

	static Config loadFromYaml()
	{
		YamlConfigLoader loader = new YamlConfigLoader();
		return loader.load();
	}

	ConnectorConfig getConnectorConfig(String id);

	void putConnectorConfig(ConnectorConfig connectorConfig);

	List<ConnectorConfig> getConnectorConfigs();

	InboundConfig getInboundConfig(String id);

	void putInboundConfig(InboundConfig inboundConfig);

	List<InboundConfig> getInboundConfigs();

	OutboundConfig getOutboundConfig(String id);

	void putOutboundConfig(OutboundConfig outboundConfig);

	List<OutboundConfig> getOutboundConfigs();

	FilterConfig getFilterConfig(String id);

	void putFilterConfig(FilterConfig filterConfig);

	List<FilterConfig> getFilterConfigs();

	RouteConfig getRouteConfig(String id);

	void putRouteConfig(RouteConfig routeConfig);

	List<RouteConfig> getRouteConfigs();

}
